[INFO] fetching crate nativeshell_core 0.1.3...
[INFO] fixing nativeshell_core-0.1.3 against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] extracting crate nativeshell_core 0.1.3 into /workspace/builds/worker-5-tc2/source
[INFO] started tweaking crates.io crate nativeshell_core 0.1.3
[INFO] finished tweaking crates.io crate nativeshell_core 0.1.3
[INFO] tweaked toml for crates.io crate nativeshell_core 0.1.3 written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate nativeshell_core 0.1.3 on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 26 packages to latest compatible versions
[INFO] [stderr]       Adding core-foundation v0.9.4 (available: v0.10.1)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] c0c78ffef7f017ee5a3d96aa0d66bf3519f646106aa0278cbf3e337b705ebe71
[INFO] running `Command { std: "docker" "start" "c0c78ffef7f017ee5a3d96aa0d66bf3519f646106aa0278cbf3e337b705ebe71", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c0c78ffef7f017ee5a3d96aa0d66bf3519f646106aa0278cbf3e337b705ebe71" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c0c78ffef7f017ee5a3d96aa0d66bf3519f646106aa0278cbf3e337b705ebe71", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c0c78ffef7f017ee5a3d96aa0d66bf3519f646106aa0278cbf3e337b705ebe71" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2021 edition to 2024
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking nativeshell_core v0.1.3 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/finalizable_handle.rs (3 fixes)
[INFO] [stderr]        Fixed src/message_channel/async_method_handler.rs (1 fix)
[INFO] [stderr]        Fixed src/ffi/port.rs (1 fix)
[INFO] [stderr]        Fixed src/ffi/functions.rs (1 fix)
[INFO] [stderr]        Fixed src/ffi/value.rs (3 fixes)
[INFO] [stderr]        Fixed src/platform/linux/run_loop.rs (4 fixes)
[INFO] [stderr]        Fixed src/message_channel/native_vector.rs (20 fixes)
[INFO] [stderr]        Fixed src/message_channel/mod.rs (1 fix)
[INFO] [stderr]        Fixed src/platform/linux/sys.rs (2 fixes)
[INFO] [stderr]        Fixed src/message_channel/method_handler.rs (1 fix)
[INFO] [stderr]        Fixed src/message_channel/codec.rs (3 fixes)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/context.rs:134:34
[INFO] [stdout]     |
[INFO] [stdout] 122 |               while self.internal.attachments.borrow().len() > 0 {
[INFO] [stdout]     |                     ----------------------------------
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                     `#1` will be dropped later as of Edition 2024
[INFO] [stdout] 123 |                   let to_remove_index = self.internal.attachments.borrow().len() - 1;
[INFO] [stdout]     |                                         ----------------------------------
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] 124 |                   let to_remove = self
[INFO] [stdout]     |  _________________________________-
[INFO] [stdout] 125 | |                     .internal
[INFO] [stdout] 126 | |                     .attachments
[INFO] [stdout] 127 | |                     .borrow()
[INFO] [stdout]     | |                             -
[INFO] [stdout]     | |                             |
[INFO] [stdout]     | |_____________________________this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                               `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 134 |                   let _removed = { self.internal.attachments.borrow_mut().remove(&to_remove) };
[INFO] [stdout]     |                       --------     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |                       |            |
[INFO] [stdout]     |                       |            this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                       |            up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                       `_removed` calls a custom destructor
[INFO] [stdout]     |                       `_removed` will be dropped later as of Edition 2024
[INFO] [stdout]     |
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:2050:0
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:1582:0
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:1582:0
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:1582:0
[INFO] [stdout]     = note: `_removed` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/message_channel/message_channel.rs:277:34
[INFO] [stdout]     |
[INFO] [stdout] 277 |             if let Some(reply) = self.pending_replies.borrow_mut().remove(&reply) {
[INFO] [stdout]     |                         -----    ---------------------------------^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |        |
[INFO] [stdout]     |                         |        this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                         |        up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                         |        this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                         |        up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                         `reply` calls a custom destructor
[INFO] [stdout]     |                         `reply` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 280 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:2050:0
[INFO] [stdout]     = note: `reply` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/finalizable_handle.rs:314:14
[INFO] [stdout]     |
[INFO] [stdout] 314 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `--force-warn static-mut-refs` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 313 -     static mut COUNTER: AtomicIsize = AtomicIsize::new(0);
[INFO] [stdout] 313 +     static COUNTER: AtomicIsize = AtomicIsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/run_loop.rs:147:14
[INFO] [stdout]     |
[INFO] [stdout] 147 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 146 -     static mut COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 146 +     static COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/util/capsule.rs:133:14
[INFO] [stdout]     |
[INFO] [stdout] 133 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 132 -     static mut COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 132 +     static COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/context.rs:134:34
[INFO] [stdout]     |
[INFO] [stdout] 122 |               while self.internal.attachments.borrow().len() > 0 {
[INFO] [stdout]     |                     ----------------------------------
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                     `#1` will be dropped later as of Edition 2024
[INFO] [stdout] 123 |                   let to_remove_index = self.internal.attachments.borrow().len() - 1;
[INFO] [stdout]     |                                         ----------------------------------
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] 124 |                   let to_remove = self
[INFO] [stdout]     |  _________________________________-
[INFO] [stdout] 125 | |                     .internal
[INFO] [stdout] 126 | |                     .attachments
[INFO] [stdout] 127 | |                     .borrow()
[INFO] [stdout]     | |                             -
[INFO] [stdout]     | |                             |
[INFO] [stdout]     | |_____________________________this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                               `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 134 |                   let _removed = { self.internal.attachments.borrow_mut().remove(&to_remove) };
[INFO] [stdout]     |                       --------     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |                       |            |
[INFO] [stdout]     |                       |            this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                       |            up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                       `_removed` calls a custom destructor
[INFO] [stdout]     |                       `_removed` will be dropped later as of Edition 2024
[INFO] [stdout]     |
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:2050:0
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:1582:0
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:1582:0
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:1582:0
[INFO] [stdout]     = note: `_removed` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/message_channel/message_channel.rs:277:34
[INFO] [stdout]     |
[INFO] [stdout] 277 |             if let Some(reply) = self.pending_replies.borrow_mut().remove(&reply) {
[INFO] [stdout]     |                         -----    ---------------------------------^^^^^^^^^^^^^^^
[INFO] [stdout]     |                         |        |
[INFO] [stdout]     |                         |        this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                         |        up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                         |        this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                         |        up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                         `reply` calls a custom destructor
[INFO] [stdout]     |                         `reply` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 280 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:2050:0
[INFO] [stdout]     = note: `reply` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/finalizable_handle.rs:314:14
[INFO] [stdout]     |
[INFO] [stdout] 314 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `--force-warn static-mut-refs` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 313 -     static mut COUNTER: AtomicIsize = AtomicIsize::new(0);
[INFO] [stdout] 313 +     static COUNTER: AtomicIsize = AtomicIsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/run_loop.rs:147:14
[INFO] [stdout]     |
[INFO] [stdout] 147 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 146 -     static mut COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 146 +     static COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/util/capsule.rs:133:14
[INFO] [stdout]     |
[INFO] [stdout] 133 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 132 -     static mut COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 132 +     static COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating tests/derive.rs from 2021 edition to 2024
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.29s
[INFO] [stderr] crater-edition-check: nativeshell_core v0.1.3 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking nativeshell_core v0.1.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/context.rs:57:53
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn get_attachment<T: Any, F: FnOnce() -> T>(&self, on_init: F) -> Ref<T> {
[INFO] [stdout]    |                                                     ^^^^^                 ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                                     |
[INFO] [stdout]    |                                                     the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn get_attachment<T: Any, F: FnOnce() -> T>(&self, on_init: F) -> Ref<'_, T> {
[INFO] [stdout]    |                                                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] 21 | pub struct DartFunctions {
[INFO] [stdout] 22 |     pub post_cobject: unsafe extern "C" fn(DartPort, *mut DartCObject) -> bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]    = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub post_integer: unsafe extern "C" fn(DartPort, i64) -> bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub new_native_port: unsafe extern "C" fn(*const c_char, DartPortHandler, bool) -> DartPort,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub close_native_port: unsafe extern "C" fn(DartPort) -> bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |   #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                          --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 27 | /     pub new_weak_persistent_handle: unsafe extern "C" fn(
[INFO] [stdout] 28 | |         object: DartHandle,
[INFO] [stdout] 29 | |         peer: *mut c_void,
[INFO] [stdout] 30 | |         external_allocation_size: isize,
[INFO] [stdout] 31 | |         finalizer: DartHandleFinalizer,
[INFO] [stdout] 32 | |     ) -> DartWeakPersistentHandle,
[INFO] [stdout]    | |_________________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub delete_weak_persistent_handle: unsafe extern "C" fn(handle: DartWeakPersistentHandle),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |   #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                          --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 34 | /     pub handle_from_weak_persistent:
[INFO] [stdout] 35 | |         unsafe extern "C" fn(handle: DartWeakPersistentHandle) -> DartHandle,
[INFO] [stdout]    | |____________________________________________________________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub update_external_size: unsafe extern "C" fn(handle: DartWeakPersistentHandle, size: isize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/ffi/value.rs:262:9
[INFO] [stdout]     |
[INFO] [stdout] 256 |     #[derive(Debug, Copy, Clone, PartialEq, Eq)]
[INFO] [stdout]     |                                  --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 262 |         pub callback: DartHandleFinalizer,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/ffi/value.rs:272:9
[INFO] [stdout]     |
[INFO] [stdout] 268 |     #[derive(Debug, Copy, Clone, PartialEq, Eq)]
[INFO] [stdout]     |                                  --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 272 |         pub callback: DartHandleFinalizer,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `CString::from_raw` that must be used
[INFO] [stdout]    --> src/ffi/value.rs:308:30
[INFO] [stdout]     |
[INFO] [stdout] 308 |                     unsafe { CString::from_raw(self.value.as_string) };
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: call `drop(from_raw(ptr))` if you intend to drop the `CString`
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 308 |                     unsafe { let _ = CString::from_raw(self.value.as_string); };
[INFO] [stdout]     |                              +++++++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/finalizable_handle.rs:314:14
[INFO] [stdout]     |
[INFO] [stdout] 314 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[deny(static_mut_refs)]` (part of `#[deny(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 313 -     static mut COUNTER: AtomicIsize = AtomicIsize::new(0);
[INFO] [stdout] 313 +     static COUNTER: AtomicIsize = AtomicIsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/message_channel/event_channel.rs:76:19
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub fn borrow(&self) -> Ref<T> {
[INFO] [stdout]    |                   ^^^^^     ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub fn borrow(&self) -> Ref<'_, T> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/message_channel/event_channel.rs:80:23
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn borrow_mut(&self) -> RefMut<T> {
[INFO] [stdout]    |                       ^^^^^     ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn borrow_mut(&self) -> RefMut<'_, T> {
[INFO] [stdout]    |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/message_channel/message_channel_common.rs:63:24
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn message_channel(&self) -> Ref<MessageChannel>;
[INFO] [stdout]    |                        ^^^^^     ^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn message_channel(&self) -> Ref<'_, MessageChannel>;
[INFO] [stdout]    |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/message_channel/message_channel_common.rs:67:24
[INFO] [stdout]    |
[INFO] [stdout] 67 |     fn message_channel(&self) -> Ref<MessageChannel> {
[INFO] [stdout]    |                        ^^^^^     ^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 67 |     fn message_channel(&self) -> Ref<'_, MessageChannel> {
[INFO] [stdout]    |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/run_loop.rs:147:14
[INFO] [stdout]     |
[INFO] [stdout] 147 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 146 -     static mut COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 146 +     static COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/util/capsule.rs:133:14
[INFO] [stdout]     |
[INFO] [stdout] 133 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 132 -     static mut COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 132 +     static COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/context.rs:57:53
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn get_attachment<T: Any, F: FnOnce() -> T>(&self, on_init: F) -> Ref<T> {
[INFO] [stdout]    |                                                     ^^^^^                 ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                                     |
[INFO] [stdout]    |                                                     the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn get_attachment<T: Any, F: FnOnce() -> T>(&self, on_init: F) -> Ref<'_, T> {
[INFO] [stdout]    |                                                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] 21 | pub struct DartFunctions {
[INFO] [stdout] 22 |     pub post_cobject: unsafe extern "C" fn(DartPort, *mut DartCObject) -> bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]    = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub post_integer: unsafe extern "C" fn(DartPort, i64) -> bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub new_native_port: unsafe extern "C" fn(*const c_char, DartPortHandler, bool) -> DartPort,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub close_native_port: unsafe extern "C" fn(DartPort) -> bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |   #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                          --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 27 | /     pub new_weak_persistent_handle: unsafe extern "C" fn(
[INFO] [stdout] 28 | |         object: DartHandle,
[INFO] [stdout] 29 | |         peer: *mut c_void,
[INFO] [stdout] 30 | |         external_allocation_size: isize,
[INFO] [stdout] 31 | |         finalizer: DartHandleFinalizer,
[INFO] [stdout] 32 | |     ) -> DartWeakPersistentHandle,
[INFO] [stdout]    | |_________________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub delete_weak_persistent_handle: unsafe extern "C" fn(handle: DartWeakPersistentHandle),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |   #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                          --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 34 | /     pub handle_from_weak_persistent:
[INFO] [stdout] 35 | |         unsafe extern "C" fn(handle: DartWeakPersistentHandle) -> DartHandle,
[INFO] [stdout]    | |____________________________________________________________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/ffi/functions.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[derive(Clone, Debug, PartialEq, Eq)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub update_external_size: unsafe extern "C" fn(handle: DartWeakPersistentHandle, size: isize),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/ffi/value.rs:262:9
[INFO] [stdout]     |
[INFO] [stdout] 256 |     #[derive(Debug, Copy, Clone, PartialEq, Eq)]
[INFO] [stdout]     |                                  --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 262 |         pub callback: DartHandleFinalizer,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/ffi/value.rs:272:9
[INFO] [stdout]     |
[INFO] [stdout] 268 |     #[derive(Debug, Copy, Clone, PartialEq, Eq)]
[INFO] [stdout]     |                                  --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 272 |         pub callback: DartHandleFinalizer,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `CString::from_raw` that must be used
[INFO] [stdout]    --> src/ffi/value.rs:308:30
[INFO] [stdout]     |
[INFO] [stdout] 308 |                     unsafe { CString::from_raw(self.value.as_string) };
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: call `drop(from_raw(ptr))` if you intend to drop the `CString`
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 308 |                     unsafe { let _ = CString::from_raw(self.value.as_string); };
[INFO] [stdout]     |                              +++++++                                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/finalizable_handle.rs:314:14
[INFO] [stdout]     |
[INFO] [stdout] 314 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[deny(static_mut_refs)]` (part of `#[deny(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 313 -     static mut COUNTER: AtomicIsize = AtomicIsize::new(0);
[INFO] [stdout] 313 +     static COUNTER: AtomicIsize = AtomicIsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/message_channel/event_channel.rs:76:19
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub fn borrow(&self) -> Ref<T> {
[INFO] [stdout]    |                   ^^^^^     ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub fn borrow(&self) -> Ref<'_, T> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/message_channel/event_channel.rs:80:23
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn borrow_mut(&self) -> RefMut<T> {
[INFO] [stdout]    |                       ^^^^^     ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn borrow_mut(&self) -> RefMut<'_, T> {
[INFO] [stdout]    |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/message_channel/message_channel_common.rs:63:24
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn message_channel(&self) -> Ref<MessageChannel>;
[INFO] [stdout]    |                        ^^^^^     ^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn message_channel(&self) -> Ref<'_, MessageChannel>;
[INFO] [stdout]    |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/message_channel/message_channel_common.rs:67:24
[INFO] [stdout]    |
[INFO] [stdout] 67 |     fn message_channel(&self) -> Ref<MessageChannel> {
[INFO] [stdout]    |                        ^^^^^     ^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 67 |     fn message_channel(&self) -> Ref<'_, MessageChannel> {
[INFO] [stdout]    |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `nativeshell_core` (lib) due to 3 previous errors; 16 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/run_loop.rs:147:14
[INFO] [stdout]     |
[INFO] [stdout] 147 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 146 -     static mut COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 146 +     static COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/util/capsule.rs:133:14
[INFO] [stdout]     |
[INFO] [stdout] 133 |     unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 132 -     static mut COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 132 +     static COUNTER: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `nativeshell_core` (lib test) due to 3 previous errors; 16 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "c0c78ffef7f017ee5a3d96aa0d66bf3519f646106aa0278cbf3e337b705ebe71", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c0c78ffef7f017ee5a3d96aa0d66bf3519f646106aa0278cbf3e337b705ebe71", kill_on_drop: false }`
[INFO] [stdout] c0c78ffef7f017ee5a3d96aa0d66bf3519f646106aa0278cbf3e337b705ebe71
